最近遇到项目需要解码2.4G配置,以此为例浅谈解码思路。 首先: 需要有仪器抓包或者可以抓波形进行算法分析,确定大致的同步帧。 前提: 1、某芯片同步帧有3-5个字节,优先猜测4、5字节 2、可能有定长、不定长(9bit header中6bit len) 3、crc可能0、1、2字节,poly、init确定,大胆猜测2字节 策略: 拿到抓包数据或者用同步帧通过定长模式收到的数据,用4、5个字节的窗口去框定同步帧。 1、首先向右框定,界限是碰到11或者00时,则不是前导码,往后拿4、5个字节,用前提2试探,看到完整的16bit CRC, 概率较大,则进行计算验证。 2、往左盲猜0、1,定长稳定收包验证。然后用和1同样的思路进行试探验证,直到完整的前导码0x55、0xaa则停止,概率不大了。 总结: 1、一般来讲,2.4G应用协议设计会在10~20个字节左右,不会太长。 2、如果解码某个新平台,建议先用基础demo对接摸清楚其各模式crc计算范围、大小端等情况。 3、以上策略可以写一个软件辅助穷举计算。其中crc是按位运算的,不是常见的按字节运算,芯片底层会通过数字电路进行硬件计算, 我们需要自己实现按位运算算法。 |